home *** CD-ROM | disk | FTP | other *** search
/ Mission 3 / Mission 3.zip / Mission 3.iso / texte / 7up_pd / tos.h < prev    next >
C/C++ Source or Header  |  1998-10-29  |  20KB  |  626 lines

  1. /*      TOS.H
  2.  
  3.         Tos Definition Includes
  4.  
  5.         Copyright (c) Borland International 1990
  6.         All Rights Reserved.
  7. */
  8.  
  9.  
  10. #if !defined( __TOS )
  11. #define __TOS
  12.  
  13. typedef struct          /* used by Cconrs */
  14. {
  15.         unsigned char maxlen;
  16.         unsigned char actuallen;
  17.         char    buffer[255];
  18. } LINE;
  19.  
  20.  
  21. typedef struct          /* used by Fsetdta, Fgetdta */
  22. {
  23.     char            d_reserved[21];
  24.     unsigned char   d_attrib;
  25.     unsigned int    d_time;
  26.     unsigned int    d_date;
  27.     unsigned long   d_length;
  28.     char            d_fname[14];
  29. } DTA;
  30.  
  31.  
  32. typedef struct          /* used by Dfree */
  33. {
  34.     unsigned long   b_free;
  35.     unsigned long   b_total;
  36.     unsigned long   b_secsiz;
  37.     unsigned long   b_clsiz;
  38. } DISKINFO;
  39.  
  40.  
  41. typedef struct baspag   /* used by Pexec */
  42. {
  43.         void    *p_lowtpa;
  44.         void    *p_hitpa;
  45.         void    *p_tbase;
  46.         long    p_tlen;
  47.         void    *p_dbase;
  48.         long    p_dlen;
  49.         void    *p_bbase;
  50.         long    p_blen;
  51.         DTA     *p_dta;
  52.         struct baspag *p_parent;
  53.         long    p_resrvd0;
  54.         char    *p_env;
  55.         char    p_stdfh[6];
  56.         char    p_resrvd1;
  57.         char    p_curdrv;
  58.         long    p_resrvd2[18];
  59.         char    p_cmdlin[128];
  60. } BASPAG;
  61.  
  62.  
  63. typedef struct          /* used by Getbpb */
  64. {
  65.         int     recsiz;
  66.         int     clsiz;
  67.         int     clsizb;
  68.         int     rdlen;
  69.         int     fsiz;
  70.         int     fatrec;
  71.         int     datrec;
  72.         int     numcl;
  73.         int     bflags;
  74. } BPB;
  75.  
  76.  
  77. typedef struct
  78. {
  79.         unsigned int  time;
  80.         unsigned int  date;
  81. } DOSTIME;
  82.  
  83.  
  84. typedef struct          /* used by Iorec */
  85. {
  86.         void    *ibuf;
  87.         int     ibufsiz;
  88.         int     ibufhd;
  89.         int     ibuftl;
  90.         int     ibuflow;
  91.         int     ibufhi;
  92. } IOREC;
  93.  
  94.  
  95. typedef struct          /* used by Kbdvbase */
  96. {
  97.         void    (*kb_midivec)();
  98.         void    (*kb_vkbderr)();
  99.         void    (*kb_vmiderr)();
  100.         void    (*kb_statvec)();
  101.         void    (*kb_mousevec)();
  102.         void    (*kb_clockvec)();
  103.         void    (*kb_joyvec)();
  104.         void    (*kb_midisys)();
  105.         void    (*kb_kbdsys)();
  106. } KBDVBASE;
  107.  
  108.  
  109. typedef struct          /* used by Pexec */
  110. {
  111.         unsigned char   length;
  112.         char            command_tail[128];
  113. } COMMAND;
  114.  
  115.  
  116. typedef struct          /* used by Initmouse */
  117. {
  118.         char    topmode;
  119.         char    buttons;
  120.         char    x_scale;
  121.         char    y_scale;
  122.         int     x_max;
  123.         int     y_max;
  124.         int     x_start;
  125.         int     y_start;
  126. } MOUSE;
  127.  
  128.  
  129. typedef struct          /* used by Prtblk */
  130. {
  131.         void    *pb_scrptr;
  132.         int     pb_offset;
  133.         int     pb_width;
  134.         int     pb_height;
  135.         int     pb_left;
  136.         int     pb_right;
  137.         int     pb_screz;
  138.         int     pb_prrez;
  139.         void    *pb_colptr;
  140.         int     pb_prtype;
  141.         int     pb_prport;
  142.         void    *pb_mask;
  143. } PBDEF;
  144.  
  145.  
  146. typedef struct          /* used by Keytbl */
  147. {
  148.         char *unshift;
  149.         char *shift;
  150.         char *capslock;
  151. } KEYTAB;
  152.  
  153.  
  154. typedef struct __md
  155. {
  156.         struct __md *m_link;
  157.         void        *m_start;
  158.         long        m_length;
  159.         BASPAG      *m_own;
  160. } MD;
  161.  
  162.  
  163. typedef struct          /* used by Getmpb */
  164. {
  165.         MD *mp_mfl;
  166.         MD *mp_mal;
  167.         MD *mp_rover;
  168. } MPB;
  169.  
  170. typedef struct
  171. {
  172.         int   (*Bconstat) ();
  173.         long  (*Bconin) ();
  174.         int   (*Bcostat) ();
  175.         void  (*Bconout) ();
  176.         long  (*Rsconf) ();
  177.         IOREC *iorec;
  178. } MAPTAB;
  179.  
  180. typedef struct
  181. {
  182.         MAPTAB *maptab;
  183.         int    maptabsize;
  184. } BCONMAP;
  185.  
  186. /* system variable _sysbase (0x4F2L) points to next structure         */
  187. typedef struct _syshdr
  188. {
  189.     unsigned       os_entry;   /* $00 BRA to reset handler             */
  190.     unsigned       os_version; /* $02 TOS version number               */
  191.     void           *os_start;  /* $04 -> reset handler                 */
  192.     struct _syshdr *os_base;   /* $08 -> baseof OS                     */
  193.     void           *os_membot; /* $0c -> end BIOS/GEMDOS/VDI ram usage */
  194.     void           *os_rsv1;   /* $10 << unused,reserved >>            */
  195.     long           *os_magic;  /* $14 -> GEM memoryusage parm. block   */
  196.     long           os_gendat;  /* $18 Date of system build($MMDDYYYY)  */
  197.     int            os_palmode; /* $1c OS configuration bits            */
  198.     int            os_gendatg; /* $1e DOS-format date of systembuild   */
  199. /*
  200.     The next three fields are only available in TOS versions 1.2 and
  201.     greater
  202. */
  203.     void           *_root;     /* $20 -> base of OS pool               */
  204.     long           *kbshift;   /* $24 -> keyboard shift state variable */
  205.     BASPAG         **_run;     /* $28 -> GEMDOS PID of current process */
  206.     void           *p_rsv2;    /* $2c << unused, reserved >>           */
  207. } SYSHDR;
  208.  
  209.  
  210.  
  211. /* attributes for Fcreate/Fsfirst/Fsnext: */
  212.  
  213. #define FA_READONLY     0x01
  214. #define FA_HIDDEN       0x02
  215. #define FA_SYSTEM       0x04
  216. #define FA_VOLUME       0x08
  217. #define FA_SUBDIR       0x10
  218. #define FA_ARCHIVE      0x20
  219.  
  220. /* Fopen modes: */
  221.  
  222. #define FO_READ         0
  223. #define FO_WRITE        1
  224. #define FO_RW           2
  225.  
  226. extern BASPAG *_BasPag;
  227. extern long _PgmSize;
  228.  
  229. long    gemdos( void, ... );
  230. long    bios( void, ... );
  231. long    xbios( void, ... );
  232.  
  233. /****** Tos *************************************************************/
  234.  
  235. void    Pterm0( void );
  236. long    Cconin( void );
  237. void    Cconout( int c );
  238. int     Cauxin( void );
  239. void    Cauxout( int c );
  240. int     Cprnout( int c );
  241. long    Crawio( int w );
  242. long    Crawcin( void );
  243. long    Cnecin( void );
  244. int     Cconws( const char *buf );
  245. void    Cconrs( LINE *buf );
  246. int     Cconis( void );
  247. long    Dsetdrv( int drv );
  248. int     Cconos( void );
  249. int     Cprnos( void );
  250. int     Cauxis( void );
  251. int     Cauxos( void );
  252. int     Dgetdrv( void );
  253. void    Fsetdta( DTA *buf );
  254. long    Super( void *stack );
  255. unsigned int  Tgetdate( void );
  256. unsigned int Tsetdate( unsigned int date );
  257. unsigned int  Tgettime( void );
  258. unsigned int  Tsettime( unsigned int time );
  259. DTA     *Fgetdta( void );
  260. int     Sversion( void );
  261. void    Ptermres( long keepcnt, int retcode );
  262. int     Dfree( DISKINFO *buf, int driveno );
  263. int     Dcreate( const char *path );
  264. int     Ddelete( const char *path );
  265. int     Dsetpath( const char *path );
  266. long    Fcreate( const char *filename, int attr );
  267. long    Fopen( const char *filename, int mode );
  268. int     Fclose( int handle );
  269. long    Fread( int handle, long count, void *buf );
  270. long    Fwrite( int handle, long count, void *buf );
  271. int     Fdelete( const char *filename );
  272. long    Fseek( long offset, int handle, int seekmode );
  273. int     Fattrib( const char *filename, int wflag, int attrib );
  274. long    Fdup( int handle );
  275. int     Fforce( int stch, int nonstdh );
  276. int     Dgetpath( char *path, int driveno );
  277. void    *Malloc( long number );
  278. int     Mfree( void *block );
  279. int     Mshrink( int zero, void *block, long newsiz );
  280. long    Pexec( int mode, char *ptr1, void *ptr2, void *ptr3 );
  281. void    Pterm( int retcode );
  282. int     Fsfirst( const char *filename, int attr );
  283. int     Fsnext( void );
  284. int     Frename( int zero, const char *oldname, const char *newname );
  285. int     Fdatime( DOSTIME *timeptr, int handle, int wflag );
  286.  
  287. /****** TOS 030 Gemdos Extension ****************************************/
  288.  
  289. void    *Mxalloc( long number, int mode );
  290. long    Maddalt( void *start, long size );
  291.  
  292. /****** Network Gemdos Extension ****************************************/
  293.  
  294. long    Flock( int handle, int mode, long start, long length );
  295.  
  296. /****** Bios ************************************************************/
  297.  
  298. void    Getmpb( MPB *ptr );
  299. int     Bconstat( int dev );
  300. long    Bconin( int dev );
  301. void    Bconout( int dev, int c );
  302. long    Rwabs( int rwflag, void *buf, int cnt, int recnr, int dev );
  303. void    (*Setexc( int number, void (*exchdlr)() )) ();
  304. long    Tickcal( void );
  305. BPB     *Getbpb( int dev );
  306. long    Bcostat( int dev );
  307. long    Mediach( int dev );
  308. long    Drvmap( void );
  309. long    Kbshift( int mode );
  310.  
  311.  
  312. /****** XBios ***********************************************************/
  313.  
  314. void    Initmouse( int type, MOUSE *par, void (*mousevec)() );
  315. void    *Ssbrk( int count );
  316. void    *Physbase( void );
  317. void    *Logbase( void );
  318. int     Getrez( void );
  319. void    Setscreen( void *laddr, void *paddr, int rez );
  320. void    Setpalette( void *pallptr );
  321. int     Setcolor( int colornum, int color );
  322. int     Floprd( void *buf, void *filler, int devno, int sectno,
  323.                int trackno, int sideno, int count );
  324. int     Flopwr( void *buf, void *filler, int devno, int sectno,
  325.                int trackno, int sideno, int count );
  326. int     Flopfmt( void *buf, void *filler, int devno, int spt, int trackno,
  327.                 int sideno, int interlv, long magic, int virgin );
  328. void    Midiws( int cnt, void *ptr );
  329. void    Mfpint( int erno, void (*vector)() );
  330. IOREC   *Iorec( int dev );
  331. long    Rsconf( int baud, int ctr, int ucr, int rsr, int tsr, int scr );
  332. KEYTAB  *Keytbl( void *unshift, void *shift, void *capslock );
  333. long    Random( void );
  334. void    Protobt( void *buf, long serialno, int disktype, int execflag );
  335. int     Flopver( void *buf, void *filler, int devno, int sectno,
  336.                 int trackno, int sideno, int count );
  337. void    Scrdmp( void );
  338. int     Cursconf( int func, int rate );
  339. void    Settime( unsigned long time );
  340. unsigned long  Gettime( void );
  341. void    Bioskeys( void );
  342. void    Ikbdws( int count, void *ptr );
  343. void    Jdisint( int number );
  344. void    Jenabint( int number );
  345. char    Giaccess( char data, int regno );
  346. void    Offgibit( int bitno );
  347. void    Ongibit( int bitno );
  348. void    Xbtimer( int timer, int control, int data, void (*vector)() );
  349. void    *Dosound( void *buf );
  350. int     Setprt( int config );
  351. KBDVBASE *Kbdvbase( void );
  352. int     Kbrate( int initial, int repeat );
  353. void    Prtblk( PBDEF *par );
  354. void    Vsync( void );
  355. long    Supexec( long (*func)() );
  356. void    Puntaes( void );
  357. int     Floprate( int devno, int newrate );
  358. int     Blitmode( int mode );
  359.  
  360. /* TOS030 XBios */
  361. int     DMAread( long sector, int count, void *buffer, int devno );
  362. int     DMAwrite( long sector, int count, void *buffer, int devno );
  363. int     NVMaccess( int opcode, int start, int count, void *buffer );
  364. long    Bconmap( int devno );
  365. int     Esetshift( int shftMode );
  366. int     Egetshift( void );
  367. int     EsetBank( int bankNum );
  368. int     EsetColor( int colorNum, int color );
  369. void    EsetPalette( int colorNum, int count, int *palettePtr );
  370. void    EgetPalette( int colorNum, int count, int *palettePtr );
  371. int     EsetGray( int swtch );
  372. int     EsetSmear( int swtch );
  373.  
  374. /* MinT Gemdos */
  375.  
  376. /* signal handling */
  377.  
  378. #define NSIG       31       /* number of signals recognized   */
  379.  
  380. #define SIGNULL     0       /* not really a signal             */
  381. #define SIGHUP      1       /* hangup signal                   */
  382. #define SIGINT      2       /* sent by ^C                      */
  383. #define SIGQUIT     3       /* quit signal                     */
  384. #define SIGILL      4       /* illegal instruction             */
  385. #define SIGTRAP     5       /* trace trap                      */
  386. #define SIGABRT     6       /* abort signal                    */
  387. #define SIGPRIV     7       /* privilege violation             */
  388. #define SIGFPE      8       /* divide by zero                  */
  389. #define SIGKILL     9       /* cannot be ignored               */
  390. #define SIGBUS     10       /* bus error                       */
  391. #define SIGSEGV    11       /* illegal memory reference        */
  392. #define SIGSYS     12       /* bad argument to a system call   */
  393. #define SIGPIPE    13       /* broken pipe                     */
  394. #define SIGALRM    14       /* alarm clock                     */
  395. #define SIGTERM    15       /* software termination signal     */
  396. #define SIGURG     16       /* urgent condition on I/O channel */
  397. #define SIGSTOP    17       /* stop signal not from terminal   */
  398. #define SIGTSTP    18       /* stop signal from terminal       */
  399. #define SIGCONT    19       /* continue stopped process        */
  400. #define SIGCHLD    20       /* child stopped or exited         */
  401. #define SIGTTIN    21       /* read by background process      */
  402. #define SIGTTOU    22       /* write by background process     */
  403. #define SIGIO      23       /* I/O possible on a descriptor    */
  404. #define SIGXCPU    24       /* CPU time exhausted              */
  405. #define SIGXFSZ    25       /* file size limited exceeded      */
  406. #define SIGVTALRM  26       /* virtual timer alarm             */
  407. #define SIGPROF    27       /* profiling timer expired         */
  408. #define SIGWINCH   28       /* window size changed             */
  409. #define SIGUSR1    29       /* user signal 1                   */
  410. #define SIGUSR2    30       /* user signal 2                   */
  411.  
  412. #define SIG_DFL    0        /* default signal handler          */
  413. #define SIG_IGN    1        /* ignore the signal               */
  414.  
  415.  
  416. /* file types */
  417. #define S_IFMT  0170000     /* mask to select file type */
  418. #define S_IFCHR 0020000     /* BIOS special file */
  419. #define S_IFDIR 0040000     /* directory file */
  420. #define S_IFREG 0100000     /* regular file */
  421. #define S_IFIFO 0120000     /* FIFO */
  422. #define S_IMEM  0140000     /* memory region or process */
  423. #define S_IFLNK 0160000     /* symbolic link */
  424.  
  425. /* special bits: setuid, setgid, sticky bit */
  426. #define S_ISUID 04000
  427. #define S_ISGID 02000
  428. #define S_ISVTX 01000
  429.  
  430. /* file access modes for user, group, and other*/
  431. #define S_IRUSR         0400
  432. #define S_IWUSR         0200
  433. #define S_IXUSR         0100
  434. #define S_IRGRP         0040
  435. #define S_IWGRP         0020
  436. #define S_IXGRP         0010
  437. #define S_IROTH         0004
  438. #define S_IWOTH         0002
  439. #define S_IXOTH         0001
  440. #define DEFAULT_DIRMODE (0777)
  441. #define DEFAULT_MODE    (0666)
  442.  
  443.  
  444. typedef struct
  445. {
  446.         long     msg1;
  447.         long     msg2;
  448.         int      pid;
  449. } MSG;
  450.  
  451. typedef struct
  452. {
  453.         unsigned int   mode;
  454.         long           index;
  455.         unsigned int   dev;
  456.         unsigned int   reserved1;
  457.         unsigned int   nlink;
  458.         unsigned int   uid;
  459.         unsigned int   gid;
  460.         long           size;
  461.         long           blksize;
  462.         long           nblocks;
  463.         int            mtime;
  464.         int            mdate;
  465.         int            atime;
  466.         int            adate;
  467.         int            ctime;
  468.         int            cdate;
  469.         int            attr;
  470.         int            reserved2;
  471.         long           reserved3[2];
  472. } XATTR;
  473.  
  474.  
  475. #define SA_NOCLDSTOP    1
  476.  
  477. typedef struct
  478. {
  479.         void    (*sa_handler)( long sig );
  480.         long    sa_mask;
  481.         int     sa_flags;
  482. } SIGACTION;
  483.  
  484.  
  485. int     Syield( void );
  486. int     Fpipe( int *usrh );
  487. int     Fcntl( int f, long arg, int cmd );
  488. long    Finstat( int f );
  489. long    Foutstat( int f );
  490. long    Fgetchar( int f, int mode );
  491. long    Fputchar( int f, long c, int mode );
  492. long    Pwait( void );
  493. int     Pnice( int delta );
  494. int     Pgetpid( void );
  495. int     Pgetppid( void );
  496. int     Pgetpgrp( void );
  497. int     Psetpgrp( int pid, int newgrp );
  498. int     Pgetuid( void );
  499. int     Psetuid( int id );
  500. int     Pkill( int pid, int sig );
  501. void    *Psignal( int sig, void *handler );
  502. int     Pvfork( void );
  503. int     Pgetgid( void );
  504. int     Psetgid( int id );
  505. long    Psigblock( long mask );
  506. long    Psigsetmask( long mask );
  507. long    Pusrval( long arg );
  508. int     Pdomain( int newdom );
  509. void    Psigreturn( void );
  510. int     Pfork( void );
  511. long    Pwait3( int flag, long *rusage );
  512. int     Fselect( unsigned int timeout, long *rfds, long *wfds, long *xfds );
  513. void    Prusage( long *r );
  514. long    Psetlimit( int lim, long value );
  515. long    Talarm( long secs );
  516. void    Pause( void );
  517. long    Sysconf( int n );
  518. long    Psigpending( void );
  519. long    Dpathconf( char *name, int n );
  520. long    Pmsg( int mode, long mbox, MSG *msg );
  521. long    Fmidipipe( int pid, int in, int out );
  522. int     Prenice( int pid, int delta );
  523. long    Dopendir( char *name, int flag );
  524. long    Dreaddir( int buflen, long dir, char *buf );
  525. long    Drewinddir( long dir );
  526. long    Dclosedir( long dir );
  527. long    Fxattr( int flag, char *name, XATTR *buf );
  528. long    Flink( char *oldname, char *newname );
  529. long    Fsymlink( char *oldname, char *newname );
  530. long    Freadlink( int size, char *buf, char *name );
  531. long    Dcntl( int cmd, char *name, long arg );
  532. long    Fchown( char *name, int uid, int gid );
  533. long    Fchmod( char *name, int mode );
  534. long    Pumask( unsigned int mode );
  535. long    Psemaphore( int mode, long id, long timeout );
  536. long    Dlock( int mode, int drive );
  537. void    Psigpause( unsigned long mask );
  538. long    Psigaction( int sig, SIGACTION *act, SIGACTION *oact );
  539. int     Pgeteuid( void );
  540. int     Pgetegid( void );
  541.  
  542. /* Falcon */
  543.  
  544. #define VERTFLAG          0x0100
  545. #define STMODES           0x0080
  546. #define OVERSCAN          0x0040
  547. #define PAL               0x0020
  548. #define VGA               0x0010
  549. #define TV                0x0000
  550.  
  551. #define COL80             0x08
  552. #define COL40             0x00
  553.  
  554. #define BPS16             4
  555. #define BPS8              3
  556. #define BPS4              2
  557. #define BPS2              1
  558. #define BPS1              0
  559.  
  560. #define NUMCOLS           7
  561.  
  562.  
  563. long    locksnd( void );
  564. long    unlocksnd( void );
  565. long    soundcmd( int mode, int data );
  566. long    setbuffer( int reg, void *begaddr, void *endaddr );
  567. long    setsndmode( int mode );
  568. long    settracks( int playtracks, int rectracks );
  569. long    setmontracks( int montrack );
  570. long    setinterrupt( int src_inter, int cause );
  571. long    buffoper( int mode );
  572. long    dsptristate( int dspxmit, int dsprec );
  573. long    gpio( int mode, int data );
  574. long    devconnect( int src, int dst, int srcclk, int prescale,
  575.                     int protocol );
  576. long    sndstatus( int reset );
  577. long    buffptr( long *ptr );
  578.  
  579. int     Dsp_LoadProg( char *file, int ability, char *buffer );
  580. long    Dsp_LodToBinary( char *file, char *codeptr );
  581. void    Dsp_DoBlock( char *data_in, long size_in, char *data_out,
  582.                      long size_out );
  583. void    Dsp_BlkHandShake( char *data_in, long size_in, char *data_out,
  584.                           long size_out );
  585. void    Dsp_BlkUnpacked( long *data_in, long size_in, long *data_out,
  586.                          long size_out );
  587. void    Dsp_InStream( char *data_in, long block_size, long num_blocks,
  588.                       long *blocks_done );
  589. void    Dsp_OutStream( char *data_out, long block_size, long num_blocks,
  590.                        long *blocks_done );
  591. void    Dsp_IOStream( char *data_in, char *data_out, long block_insize,
  592.                       long block_outsize, long num_blocks,
  593.                       long *blocks_done );
  594. void    Dsp_RemoveInterrupts( int mask );
  595. int     Dsp_GetWordSize( void );
  596. int     Dsp_Lock( void );
  597. void    Dsp_Unlock( void );
  598. void    Dsp_Available( long *xavailable, long *yavailable );
  599. int     Dsp_Reserve( long xreserve, long yreserve );
  600. void    Dsp_ExecProg( char *codeptr, long codesize, int ability );
  601. void    Dsp_ExecBoot( char *codeptr, long codesize, int ability );
  602. void    Dsp_TriggerHC( int vector );
  603. int     Dsp_RequestUniqueAbility( void );
  604. int     Dsp_GetProgAbility( void );
  605. void    Dsp_FlushSubroutines( void );
  606. int     Dsp_LoadSubroutine( char *codeptr, long codesize, int ability );
  607. int     Dsp_InqSubrAbility( int ability );
  608. int     Dsp_RunSubroutine( int handle );
  609. int     Dsp_Hf0( int flag );
  610. int     Dsp_Hf1( int flag );
  611. int     Dsp_Hf2( void );
  612. int     Dsp_Hf3( void );
  613. void    Dsp_BlkWords( void *data_in, long size_in, void *data_out,
  614.                       long size_out );
  615. void    Dsp_BlkBytes( void *data_in, long size_in, void *data_out,
  616.                       long size_out );
  617. char    Dsp_HStat( void );
  618. void    Dsp_SetVectors( void (*receiver)( ), long (*transmitter)( ));
  619. int     setmode( int modecode );
  620. int     mon_type( void );
  621. void    ext_sync( int flag );
  622.  
  623. #endif
  624.  
  625. /************************************************************************/
  626.